<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    // 封装一个函数  判断一个数是否素数  checkNum(25)   => true false

    // 素数(质数) => 质数是指在大于1的自然数中，除了1和它本身以外不再有其他数能整除它
    // n (1 ... n)     => 除了1和它本身以外  (2 ... n-1)

    // 9 => 除了1和它本身以外 (2 3 4 5 6 7 8)  => 存在能整除9的数 => 3  合数/非素数
    // 11 => 除了1和它本身以外(2 3 4 5 6 7 8 9 10) => 不存在 => 质数/素数

    //  => 除了1和它本身以外(2 3 4 5 6 7 8 9 10) 是否存在能整数它的数?

    // var n = 25;
    // for (var i = 2; i < n; i++) {  // (2 ..5.. 24)
    //     if (n % i == 0) { //如果存在能整数它的数 -> 合数
    //         console.log("n是合数,存在能整除它的数" + i);
    //     }
    // }


    // 假设法:
    // a. 判断一个范围中是否存在满足条件的元素 => 先假设不存在 -> 找到一个就存在(推翻假设)
    // b. 判断一个范围中数是否都满足条件    => 先假设都满足条件 -> 找到一个不满足条件的(推翻假设)

    // 步骤:
    // 先声明一个变量,来记录假设的状态  -> 尝试从对立面推翻 -> 如果能推翻(假设不成立,改变状态),不能推翻(假设成立)


    // debugger;
    // var n = 154566779;
    // var flag = true; // 假设是素数 (不存在能整除它的数)
    // for (var i = 2; i < n; i++) {
    //     if (n % i == 0) { //如果存在能整数它的数 -> 合数
    //         flag = false;
    //         break;
    //     }
    // }
    // if (flag) {
    //     console.log(n + "是素数");
    // } else {
    //     console.log(n + "是合数,存在能整除它的数" + i);
    // }



    function isSu(n) {
        var flag = true; // 假设是素数 (不存在能整除它的数)
        for (var i = 2; i < n; i++) {
            if (n % i == 0) { //如果存在能整数它的数 -> 合数
                flag = false;
                break;
            }
        }
        return flag;
    }


    for (var i = 2; i < 100; i++) {
        var res = isSu(i);
        if (res) {
            console.log(i + "是素数");
        }
    }





</script>

</html>